// packageA/pages/setBatteryAdd/setBatteryAdd.js
const app = getApp();
import CommonService from '../../../utils/service/commonService.js';
import Toast from '../../../miniprogram_npm/@vant/weapp/toast/toast';
import Dialog from '../../../miniprogram_npm/@vant/weapp/dialog/dialog';
const util = require('../../../utils/util');
import Base64 from '../../../utils/Base64.js';

Page({

  /**
   * 页面的初始数据
   */
  data: {
    //传参
    paramObj:null,
    //传参来的id
    id:null,
    //是否是修改
    isEdit:false,
    //修改信息回显
    editInfo:{},
    //提交按钮禁用
    disabled:false,
    //避免表单重复提交
    code:null,
    //电池类型
    batteryTypeMap: null,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    wx.getUserProfile({
      desc: '为您提供更好的服务',
      success: (res) => {}
    })
    
    //获取电池类型
    this.getType();

    this.setData({
      code: Base64.encode(new Date() + app.globalData.userInfo.userName)
    })

    if(options.paramObj){
      let paramObj=JSON.parse(options.paramObj);
      console.log('电池设置传参');
      console.log(paramObj);

      this.setData({
        paramObj: paramObj
      })

      if(paramObj.id){
        this.setData({
          id: paramObj.id,
          isEdit: true
        })

        //获取修改数据
        this.getInfo(); 

      }else if(paramObj.notSetInfo){
        this.setData({
          editInfo: paramObj.notSetInfo
        })
      }
    }
  },

  //提交表单##
  confirmForm(e){
    //避免表单重复提交-先禁用按钮
    this.setData({
      disabled:true
    })

    let obj=e.detail.value;
    let td=this.data;
    let editInfo=td.editInfo;
    let user=app.globalData.userInfo;
    //去掉末尾的0
    const regexp=/(?:\.0*|(\.\d+?)0+)$/;

    let minVol=obj.minVol.trim();
    let floats=obj.floats.trim();

    //验证最低电压
    if(minVol){
      if(minVol>0){
        //保留一位小数
        minVol=Number(minVol).toFixed(1).replace(regexp,'$1'); 
      }else{
        Toast.fail('最低电压为正数');
        return;
      }
    }else{
      Toast.fail('请输入最低电压');
      return;
    }

    //验证浮动值
    if(floats){
      if(floats>0 && floats<1){
        //保留一位小数
        floats=Number(floats).toFixed(1).replace(regexp,'$1'); 
      }else{
        Toast.fail('请输入0至1之间小数');
        return;
      }
    }else{
      Toast.fail('请输入浮动值');
      return;
    }

    //权限
    let authArr=[user.depart, user.departObj[0].companyId];
    authArr=util.arrayRepeatEmpty(authArr);

    let param={
      className:'batteryMinVolSet',
      data:{
        requestToken: td.code,
        id: td.id,
        dataAuthority: {
          depart: authArr
        },
        appId: [app.globalData.myAppId],
        //电池类型
        batteryTypeId: editInfo.batteryTypeId,
        //电压
        volts: editInfo.volts,
        //最低电压:
        minVol: Number(minVol),
        //浮动值
        floats: Number(floats)
      }
    }

    // console.log(param.data);
    // return;

    //避免表单重复提交
    Toast.loading({
      duration: 0,
      forbidClick: true,
      message: '数据提交中...'
    });

    CommonService.goSave(param).then(res=>{
      this.setData({
        disabled:false
      })
      if (res.statusCode == 200 && res.data.success == true){
        Toast.success('成功');
        setTimeout(() => {
          //返回列表页并刷新数据
          this.backAndRefresh();
        }, 1000);
      }else if(res.statusCode==202){
        Toast.fail('您操作太快了,请勿重复提交');
      }else{
        Toast.fail('操作失败');
      }
    }).catch((error) => {
      Toast.fail('操作失败');
    })
  },

  //获取修改数据
  getInfo(){
    let param = {
      isAuth: false,
      className: 'batteryMinVolSet',
      data: {
        id: this.data.id,
        selectFields: ['id','batteryTypeId','minVol','floats','volts']
      }
    }

    CommonService.goFindList(param).then(res => {
      if(res.data.data && res.data.data.result && res.data.data.result.length) {
        let result=res.data.data.result[0];
        console.log('电池设置回显');
        console.log(result);

        //电池类型名称
        try{
          let tMap=this.data.batteryTypeMap;
          result.self_batteryTypeName=tMap.get(result.batteryTypeId).name;
        } catch (e) {}  

        this.setData({
          editInfo: result
        })
      }
    }).catch((error) => {
    })
  },  

  //用户输入时确认按钮可用
  onChange() {
    this.setData({
      disabled: false
    })
  },

  //返回列表页并刷新数据
  backAndRefresh(){
    let pages = getCurrentPages();
    let prevPage = pages[pages.length - 2];

    prevPage.getList();
    wx.navigateBack();
  },

  //获取电池类型
  getType(){
    let param = {
      isAuth: true,
      className: 'batteryType',
      data: {
        searchAll: true,
        nbl: Base64.encode(util.timeFormatDay(new Date())),
        selectFields: ['id','name']
      }
    }  

    CommonService.goFindList(param).then(res => {
      if(res.data.data && res.data.data.result && res.data.data.result.length) {
        let result=res.data.data.result;
        console.log('电池类型');
        console.log(result);

        let map=new Map();
        result.forEach(item => {
          map.set(item.id,item);
        });

        this.setData({
          batteryTypeMap: map
        })
      }
    }).catch((error) => {
    })
  },  

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  }
})